//C07:Stack1.cpp
// Demonstrates the STL stack.
#include <fstream>
#include <iostream>
#include <list>
#include <stack>
#include <string>
#include <vector>
using namespace std;

// Rearrange commen below to use different versions.
typedef stack<string> Stack1;    // Default: deque<string>
// typedef stack<string, vector<string>> Stack2;
// typedef stack<string, list<string>> Stack3;

int main(void)
{
    ifstream in("Stack1.cpp");
    Stack1 textlines;    // Try the different versions.
    // Read file and store lines in the stack:
    string line;
    while (getline(in, line))
    {
        textlines.push(line + "\n");
    }
    // Print lines from the stack and top them:
    while (!textlines.empty())
    {
        cout << textlines.top();
        textlines.pop();
    }
}